Amazon Athena,Amazon CloudWatch Logs Insightsの使い分けについて考えてみる
どうも、森です。
AWSにはログを分析するための方法が様々ありますが、Athena,CloudWatch Logs Insightsをどう使い分ければ良いのか考える機会がありましたので執筆したいと思います。果たして結論は出るのか???
各サービスについて
どちらもサーバーレスな環境で、インフラストラクチャの設定や管理は不要です。
Athena,CloudWatch Logs Insightsについてドキュメントを参考にし、簡単にまとめてみました。
Athena
Amazon Athena は、標準 SQL を使用して Amazon Simple Storage Service (Amazon S3) でのデータの直接分析を簡易化するインタラクティブなクエリサービスです。AWS マネジメントコンソールでいくつかアクションを実行するだけで、Athena にデータの保存先の Amazon S3 を設定し、標準 SQL を使用してアドホッククエリの実行を開始できます。結果は数秒で返ります。
Amazon S3に保存された非構造化データ、半構造化データ、および構造化データを対象に分析できます。
ODBCやJDBCでの接続が可能で、TableauなどのBIツールから接続してクエリの実行が可能です。
サポートされるログと検出されるフィールド
S3に保存されたCSV 形式、JSON 形式、列データ形式 (Apache Parquet や Apache ORC など) に対応しています。
専用のクエリ言語とコマンド
標準SQLを用いてアドホッククエリの実行を行えます。Prestoがベースになっています
視覚化の実行
Athena独自で視覚化の機能はありません。Amazon QuickSight と統合することにより可視化が可能になります。
AWS Glue データカタログを統合
Amazon S3のデータに対する永続的なメタデータストアを作ることができるため、Athenaで作成したテーブルをGlueでETL処理する、ETL処理した結果をAthenaでクエリする、といったことが容易になります。
料金
各クエリでスキャンされるデータ量に基づいて課金されます(1TB あたり 5.00USD)
データの圧縮、分割、列形式への変換を行うことにより、コストを削減でき、さらにパフォーマンス向上も見込めます。
CloudWatch Logs Insights
CloudWatch Logs Insights では、Amazon CloudWatch Logs のログデータをインタラクティブに検索して分析できます。クエリを実行することで、運用上の問題にすばやく効果的に対応できます。問題が発生した場合は、CloudWatch Logs Insights を使用して潜在的原因を特定し、デプロイした修正を検証できます。
2018年11月にでた比較的新しい機能です。
CloudWatch Logsに集められたログを対象に走査し、クエリの実行と可視化を行えます。
サポートされるログと検出されるフィールド
- AWS のサービス (Amazon Route 53、AWS Lambda、AWS CloudTrail、Amazon VPC など) のログ
- ログイベントをJSONとして生成するアプリケーションログやカスタムログのフィールド
これらを自動的に検出することができます。
専用のクエリ言語とコマンド
CloudWatch Logsに保存済みのログを対象にクエリコマンド(fields, filter, stats, sort, limit, parse)を実行できます。 さらに正規表現、算術オペレーション、比較オペレーション、数値関数、日時関数、文字列関数、汎用関数など、多数のサポート用の関数やオペレーションが用意されています。
さらに、今年のアップデートで異なるロググループのクエリも可能になっています。
視覚化の実行
1つ以上の集計関数とbin()関数を使用すると、結果を折れ線グラフやスタックされたエリアグラフとして表示できます。
クエリをCloudWatchダッシュボードに追加
自身で作成したクエリ、クエリ結果をダッシュボードに追加できます。追加されたクエリはダッシュボードのロード、更新のたびに再実行されます。
さらに、Splunk、Sumo Logic、DataDog などのAWSパートナーISVソリューションとの統合オプションがサポートされてます。
料金
クエリごとに走査したログデータの量に対してかかります($0.005/GB)。
ユースケースを考える
Athena
- 非構造データの探索(価値のあるデータかどうか検証したい)
- S3内のデータに対してアドホックな分析をしたい(主に過去のデータ)
- Webサーバーのログなどを走査して障害調査をする
- Athena と AWS Glue データカタログを併用し、ETL処理を行う。そしてクエリする。
CloudWatch Logs Insights
- Webサーバーのログなどを走査して障害調査をする
- ETL処理などせずに異なるログを横断的に分析したい
- 手軽に可視化されたデータを作る、みる
- 最近のログのアドホックな分析をしたい
まとめ
クロスロググループクエリが可能になったことで、CloudWatch Logs Insightsの使い勝手がさらに上がった感があります。
CloudWatch Logs Insights: CloudWatch Logsのデータ
Athena : S3のデータ
ですが、どちらも似たようなことは可能です。コストや手間を判断してどちらを使うのか、両方使うのか検討する必要がありますね。
正直、ログの分析だけでいいならCloudWatch Logs Insightsで十分だと感じますが、大量のログを送信し続けるとCloudWatch Logsのコストが爆高になるので、ご利用は計画的に。
こんなユースケースもあるぞ といった方はぜひコメントください!
ではまたの機会に。